Fonksiyon Çağırma Mekanizması
RISC-V'de fonksiyon çağrısı jal ve jalr komutlarıyla yapılır.
jal ra, function # ra = PC+4, PC = function
jalr x0, ra, 0 # return: PC = ra
Calling Convention
| Register | Kullanım | Koruma |
|---|---|---|
| a0-a7 | Argümanlar/dönüş | Caller |
| t0-t6 | Geçici | Caller |
| s0-s11 | Saved | Callee |
| ra | Return address | Callee |
| sp | Stack pointer | Callee |
Stack Yönetimi
# Prologue (fonksiyon girişi)
addi sp, sp, -16 # Stack'te yer aç
sw ra, 12(sp) # ra'yı kaydet
sw s0, 8(sp) # s0'ı kaydet
# Epilogue (fonksiyon çıkışı)
lw s0, 8(sp) # s0'ı geri yükle
lw ra, 12(sp) # ra'yı geri yükle
addi sp, sp, 16 # Stack'i geri al
jalr x0, ra, 0 # return
Recursive Fonksiyon Örneği
Her recursive çağrıda yeni bir stack frame oluşturulur. ra ve gerekli s register'ları kaydedilir.